<?php
// +----------------------------------------------------------------------
// | flow-notify / Report.php    [ 2021/11/10 10:19 上午 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2021 zhangqiquan All rights reserved.
// +----------------------------------------------------------------------
// | Author: zhangqiquan <768617998@qq.com>
// +----------------------------------------------------------------------
declare (strict_types=1);


namespace notify\unipush;


trait Report
{

    /**
     * 获取推送结果
    查询推送数据，可查询消息可下发数、下发数，接收数、展示数、点击数等结果。支持单个taskId查询和多个taskId查询。
    此接口调用，可直接查询toList或toApp的taskId的推送结果数据；如需查询toSingle的taskId的推送结果数据，请联系对应的商务同学开通。
     * @param array $taskids
     * @return mixed
     */
    public function getReportPushTask(array $taskids){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        $taskids = implode(',', $taskids);
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/push/task/'.$taskids, [], $header, false);
    }

    /**
     * 根据任务组名查询推送结果，返回结果包括消息可下发数、下发数，接收数、展示数、点击数。
     * @param string $group_name
     * @return mixed
     */
    public function getReportPushTaskGroup(string $group_name){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/push/task_group/'.$group_name, [], $header, false);
    }

    /**
     * 获取推送实时结果
        获取推送实时结果，可查询消息下发数，接收数、展示数、点击数和消息折损详情等结果。支持单个taskId查询和多个taskId查询。
        注意：该接口需要开通权限，如需开通，请联系对应的商务同学开通
     * @param array $taskids
     * @return mixed
     */
    public function getReportPushTaskDetail(array $taskids){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        $taskids = implode(',', $taskids);
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/push/task/'.$taskids.'/detail', [], $header, false);
    }

    /**
     * 调用此接口可以获取某个应用单日的推送数据(推送数据包括：下发数，接收数、展示数、点击数)(目前只支持查询非当天的数据)
     * @param string $date
     * @return mixed
     */
    public function getReportPushDate(string $date){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/push/date/'.$date, [], $header, false);
    }

    /**
     * 查询推送量
    查询应用当日可推送量和推送余量
    注意：
    1. 部分厂商消息不限制推送量，所以此接口不做返回，例如 hw/xmg厂商，op的私信消息，xm的重要级别消息等等
    2.vv返回的是请求量push_num，总限额total_num返回的总的到达量，所以会有请求量push_num超过总限额total_num的情况
    3.该接口做了频控限制，请不要频繁调用
     * @return mixed
     */
    public function getReportPushCount(){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/push/count', [], $header, false);
    }

    /**
     * 获取单日用户数据接口
    调用此接口可以获取某个应用单日的用户数据(用户数据包括：新增用户数，累计注册用户总数，在线峰值，日联网用户数)(目前只支持查询非当天的数据)
     * @param string $date
     * @return mixed
     */
    public function getReportUserDate(string $date){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/user/date/'.$date, [], $header, false);
    }

    /**
     * 获取24个小时在线用户数
    查询当前时间一天内的在线用户数(10分钟一个点，1个小时六个点)
     * @return mixed
     */
    public function getReportOnlineUser(){
        $header = [
            'Content-Type: application/json',
            'token: '.$this->getToken()
        ];
        return $this->curlRequest('https://restapi.getui.com/v2/'.$this->config['app_id'].'/report/online_user', [], $header, false);
    }
}